package com.learn.easy;

import java.util.Arrays;
import java.util.stream.IntStream;

/**
 * 给你一个字符串 title ，它由单个空格连接一个或多个单词组成，每个单词都只包含英文字母。请你按以下规则将每个单词的首字母 大写 ：
 *
 * 如果单词的长度为 1 或者 2 ，所有字母变成小写。
 * 否则，将单词首字母大写，剩余字母变成小写。
 * 请你返回 大写后 的 title 。
 *
 *
 *
 * 示例 1：
 *
 * 输入：title = "capiTalIze tHe titLe"
 * 输出："Capitalize The Title"
 * 解释：
 * 由于所有单词的长度都至少为 3 ，将每个单词首字母大写，剩余字母变为小写。
 * 示例 2：
 *
 * 输入：title = "First leTTeR of EACH Word"
 * 输出："First Letter of Each Word"
 * 解释：
 * 单词 "of" 长度为 2 ，所以它保持完全小写。
 * 其他单词长度都至少为 3 ，所以其他单词首字母大写，剩余字母小写。
 * 示例 3：
 *
 * 输入：title = "i lOve leetcode"
 * 输出："i Love Leetcode"
 * 解释：
 * 单词 "i" 长度为 1 ，所以它保留小写。
 * 其他单词长度都至少为 3 ，所以其他单词首字母大写，剩余字母小写。
 */
public class num_2129 {
    public static void main(String[] args) {
        System.out.println(capitalizeTitleArr("B M sy p o"));

    }

    public static String capitalizeTitle(String title) {
        String[] split = title.split(" ");
        StringBuilder res = new StringBuilder();
        for (String s : split) {
            if (s.length() >= 3) {
                s = s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
            } else {
                s = s.toLowerCase();
            }
            res.append(s).append(' ');
        }
        return res.substring(0, res.length() - 1);
    }

    public static String capitalizeTitleArr(String title) {
        StringBuilder res = new StringBuilder();
        if (title == null || title.length() == 0) {
            return null;
        }
        title = title.trim();
        char[] tmp = new char[title.length()];
        int index = 0;
        for (int i = 0; i < title.length() + 1; i++) {
            if (i < title.length() && title.charAt(i) != ' ') {
                tmp[index] = title.charAt(i);
            } else {
                if (new String(tmp).trim().length() >= 3) {
                    tmp[0] = Character.toUpperCase(tmp[0]);
                    for (int j = 0; j < tmp.length; j++) {
                        char tmpC = tmp[j];
                        if (tmpC == ' ') {
                            continue;
                        }
                        if (j == 0) {
                            tmp[j] = Character.toUpperCase(tmpC);
                        } else {
                            tmp[j] = Character.toLowerCase(tmpC);
                        }
                    }

                    res.append(new String(tmp).trim());
                } else {
                    res.append(new String(tmp).trim().toLowerCase());
                }
                tmp = new char[title.length()];
                index = -1;
                if (i < title.length()) {
                    res.append(' ');
                }
            }
            index++;
        }
        //for (char c : title.toCharArray()) {
        //    if (c != ' ') {
        //        tmp[index] = c;
        //    } else {
        //        if (new String(tmp).trim().length() >= 3) {
        //            tmp[0] = Character.toUpperCase(tmp[0]);
        //            for (int i = 0; i < tmp.length; i++) {
        //                char tmpC = tmp[i];
        //                if (tmpC == ' ') {
        //                    continue;
        //                }
        //                if (i == 0) {
        //                    tmp[i] = Character.toUpperCase(tmpC);
        //                } else {
        //                    tmp[i] = Character.toLowerCase(tmpC);
        //                }
        //            }
        //
        //            res.append(new String(tmp).trim());
        //            tmp = new char[title.length()];
        //        } else {
        //            res.append(new String(tmp).trim().toLowerCase());
        //        }
        //        index = -1;
        //        res.append(' ');
        //    }
        //    index++;
        //}

        return res.toString();
    }
}
